Node.js MySQL Delete

Node.js ஐப் பயன்படுத்தி MySQL அட்டவணைகளில் இருந்து பதிவுகளை நீக்க கற்றுக்கொள்ளுங்கள்

பதிவை நீக்குதல்

ஏற்கனவே உள்ள அட்டவணையில் இருந்து "DELETE FROM" அறிக்கையைப் பயன்படுத்தி பதிவுகளை நீக்கலாம்:

எடுத்துக்காட்டு

"Mountain 21" என்ற முகவரியுடன் உள்ள எந்த பதிவையும் நீக்கவும்:

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  let sql = "DELETE FROM customers WHERE address = 'Mountain 21'";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("Number of records deleted: " + result.affectedRows);
  });
});

DELETE தொடரியலில் WHERE கூற்றைக் கவனிக்கவும்: எந்த பதிவு அல்லது பதிவுகள் நீக்கப்பட வேண்டும் என்பதை WHERE கூற்று குறிப்பிடுகிறது. நீங்கள் WHERE கூற்றைத் தவிர்த்தால், அனைத்து பதிவுகளும் நீக்கப்படும்!

மேலே உள்ள குறியீட்டை "demo_db_delete.js" என்ற கோப்பில் சேமித்து கோப்பை இயக்கவும்:

C:\Users\Your Name>node demo_db_delete.js

இது உங்களுக்கு இந்த முடிவைக் கொடுக்கும்:

Number of records deleted: 1

⚠️ முக்கியமான எச்சரிக்கை:

  • WHERE கூற்று: எப்போதும் WHERE கூற்றைப் பயன்படுத்தவும்
  • அனைத்து பதிவுகளும்: WHERE இல்லாமல் DELETE அனைத்து பதிவுகளையும் நீக்கும்
  • மீளமுடியாதது: DELETE செயல்பாடு மீளமுடியாதது
  • பாதுகாப்பு நகல்: முக்கியமான தரவை நீக்குவதற்கு முன் பாதுகாப்பு நகல் எடுக்கவும்

முடிவு பொருள்

ஒரு வினாவை இயக்கும் போது, ஒரு முடிவு பொருள் திருப்பி அனுப்பப்படும்.

முடிவு பொருள் வினா அட்டவணையை எவ்வாறு பாதித்தது என்பதைப் பற்றிய தகவல்களைக் கொண்டுள்ளது.

மேலே உள்ள எடுத்துக்காட்டிலிருந்து திருப்பி அனுப்பப்பட்ட முடிவு பொருள் இப்படித் தெரிகிறது:

{
  fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 34,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0
}

பண்புகளின் மதிப்புகளை இப்படி காட்டலாம்:

எடுத்துக்காட்டு

பாதிக்கப்பட்ட வரிசைகளின் எண்ணிக்கையைத் திருப்பி அனுப்பவும்:

console.log(result.affectedRows)

இது இந்த முடிவை உருவாக்கும்:

1
பண்பு விளக்கம் DELETE க்கான மதிப்பு
affectedRows நீக்கப்பட்ட வரிசைகளின் எண்ணிக்கை நீக்கப்பட்ட வரிசைகளின் எண்ணிக்கை
insertId செருகப்பட்ட ID (INSERT க்கு மட்டும்) 0
changedRows மாற்றப்பட்ட வரிசைகளின் எண்ணிக்கை (UPDATE க்கு மட்டும்) 0
warningCount எச்சரிக்கைகளின் எண்ணிக்கை 0 (பொதுவாக)
message சேவையக செய்தி வெற்று சரம்

வெவ்வேறு நிபந்தனைகளுடன் DELETE

ஒற்றை பதிவை நீக்குதல்

// Delete by ID
let id = 5;
let sql = "DELETE FROM customers WHERE id = ?";
con.query(sql, [id], function (err, result) {
  if (err) throw err;
  console.log("Records deleted: " + result.affectedRows);
});

பல பதிவுகளை நீக்குதல்

// Delete multiple records with IN operator
let ids = [1, 3, 7];
let sql = "DELETE FROM customers WHERE id IN (?)";
con.query(sql, [ids], function (err, result) {
  if (err) throw err;
  console.log("Records deleted: " + result.affectedRows);
});

// Delete with range condition
let sql = "DELETE FROM customers WHERE id BETWEEN 10 AND 20";
con.query(sql, function (err, result) {
  if (err) throw err;
  console.log("Records deleted: " + result.affectedRows);
});

சிக்கலான நிபந்தனைகளுடன் நீக்குதல்

// Delete with multiple conditions
let name = 'John';
let minDate = '2023-01-01';
let sql = "DELETE FROM orders WHERE customer_name = ? AND order_date < ?";
con.query(sql, [name, minDate], function (err, result) {
  if (err) throw err;
  console.log("Records deleted: " + result.affectedRows);
});

// Delete using LIKE operator
let pattern = '%test%';
let sql = "DELETE FROM products WHERE description LIKE ?";
con.query(sql, [pattern], function (err, result) {
  if (err) throw err;
  console.log("Records deleted: " + result.affectedRows);
});

பாதுகாப்பான DELETE நடைமுறைகள்

SELECT முதலில் சரிபார்க்கவும்

// First check what will be deleted
let id = 5;
con.query("SELECT * FROM customers WHERE id = ?", [id], function (err, result) {
  if (err) throw err;
  
  if (result.length > 0) {
    console.log("Will delete:", result[0]);
    
    // Then proceed with deletion
    con.query("DELETE FROM customers WHERE id = ?", [id], function (err, deleteResult) {
      if (err) throw err;
      console.log("Records deleted: " + deleteResult.affectedRows);
    });
  } else {
    console.log("No records found to delete");
  }
});

பரிவர்த்தனைகளைப் பயன்படுத்துதல்

// Using transactions for safe deletion
con.beginTransaction(function(err) {
  if (err) throw err;
  
  let sql = "DELETE FROM customers WHERE id = ?";
  con.query(sql, [5], function (err, result) {
    if (err) {
      return con.rollback(function() {
        throw err;
      });
    }
    
    console.log("Records deleted: " + result.affectedRows);
    
    // Commit the transaction
    con.commit(function(err) {
      if (err) {
        return con.rollback(function() {
          throw err;
        });
      }
      console.log("Transaction completed successfully");
    });
  });
});

மென்மையான நீக்கல்

// Soft delete (update a flag instead of actual deletion)
let id = 5;
let sql = "UPDATE customers SET deleted = 1 WHERE id = ?";
con.query(sql, [id], function (err, result) {
  if (err) throw err;
  console.log("Records soft deleted: " + result.affectedRows);
});

// Then query only non-deleted records
con.query("SELECT * FROM customers WHERE deleted = 0", function (err, result) {
  if (err) throw err;
  console.log("Active customers:", result);
});

DELETE சிறந்த நடைமுறைகள்

பாதுகாப்பு

  • எப்போதும் WHERE கூற்றைப் பயன்படுத்தவும்
  • SQL injection தடுக்க இடம் கொள்ளும் பயன்படுத்தவும்
  • முக்கியமான தரவை நீக்குவதற்கு முன் பாதுகாப்பு நகல் எடுக்கவும்
  • உற்பத்தி தரவுத்தளங்களில் நேரடி DELETE தவிர்க்கவும்

தரவு ஒருமைப்பாடு

  • வெளிநாட்டு விசை உறவுகளைச் சரிபார்க்கவும்
  • சங்கிலி நீக்குதல்களைக் கருத்தில் கொள்ளவும்
  • தரவுத்தள கட்டுப்பாடுகளை மதிக்கவும்
  • மென்மையான நீக்கல்களைப் பயன்படுத்தவும்

குறியீடு தரம்

  • நீக்குவதற்கு முன் SELECT மூலம் சரிபார்க்கவும்
  • சரியான பிழை கையாளுதலையும் கண்காணிப்பையும் பயன்படுத்தவும்
  • பரிவர்த்தனைகளைப் பயன்படுத்தி அண்மைத்தன்மையை உறுதிப்படுத்தவும்
  • வாசிப்புக்காக வினாக்களை வடிவமைக்கவும்

முழுமையான எடுத்துக்காட்டு

அனைத்து DELETE நுட்பங்களையும் உள்ளடக்கிய முழுமையான எடுத்துக்காட்டு:

const mysql = require('mysql');

// Create connection
const con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "password",
  database: "company_db"
});

// Connect to MySQL
con.connect((err) => {
  if (err) {
    console.error('Error connecting to MySQL:', err.message);
    return;
  }
  
  console.log('Connected to MySQL database');
  
  // Example 1: Basic DELETE with WHERE
  console.log('\n1. Deleting customer with specific address:');
  const address = 'Mountain 21';
  con.query("DELETE FROM customers WHERE address = ?", [address], (err, result) => {
    if (err) {
      console.error('Error in delete 1:', err.message);
      return;
    }
    console.log(`Records deleted: ${result.affectedRows}`);
    console.log('Result object:', result);
  });
  
  // Example 2: DELETE with transaction
  console.log('\n2. Safe deletion with transaction:');
  con.beginTransaction((err) => {
    if (err) {
      console.error('Error starting transaction:', err.message);
      return;
    }
    
    // First check what we're deleting
    const customerId = 5;
    con.query("SELECT * FROM customers WHERE id = ?", [customerId], (err, selectResult) => {
      if (err) {
        return con.rollback(() => {
          console.error('Error in select:', err.message);
        });
      }
      
      if (selectResult.length > 0) {
        console.log('Will delete customer:', selectResult[0]);
        
        // Perform deletion
        con.query("DELETE FROM customers WHERE id = ?", [customerId], (err, deleteResult) => {
          if (err) {
            return con.rollback(() => {
              console.error('Error in delete:', err.message);
            });
          }
          
          console.log(`Transaction - Records deleted: ${deleteResult.affectedRows}`);
          
          // Commit transaction
          con.commit((err) => {
            if (err) {
              return con.rollback(() => {
                console.error('Error committing transaction:', err.message);
              });
            }
            console.log('Transaction committed successfully');
            
            // Close connection
            setTimeout(() => {
              con.end((err) => {
                if (err) {
                  console.error('Error closing connection:', err.message);
                  return;
                }
                console.log('\nConnection closed');
              });
            }, 1000);
          });
        });
      } else {
        console.log('No customer found with ID:', customerId);
        con.rollback(() => {
          console.log('Transaction rolled back');
        });
      }
    });
  });
});

பயிற்சி

முடிவு பொருளின் எந்த பண்பு எத்தனை வரிசைகள் நீக்கப்பட்டன என்பதைக் காட்டுகிறது?

result.deletedRows
✗ தவறு! "deletedRows" என்பது Node.js mysql தொகுதியில் ஒரு செல்லுபடியாகும் பண்பு அல்ல
result.removedRows
✗ தவறு! "removedRows" என்பது Node.js mysql தொகுதியில் ஒரு செல்லுபடியாகும் பண்பு அல்ல
result.affectedRows
✓ சரி! "affectedRows" பண்பு ஒரு வினாவால் நீக்கப்பட்ட, செருகப்பட்ட அல்லது புதுப்பிக்கப்பட்ட வரிசைகளின் மொத்த எண்ணிக்கையைக் காட்டுகிறது. DELETE அறிக்கைகளுக்கு, இது வெற்றிகரமாக நீக்கப்பட்ட வரிசைகளின் எண்ணிக்கையைக் குறிக்கிறது
result.changedRows
✗ தவறு! "changedRows" பண்பு UPDATE அறிக்கைகளால் மாற்றப்பட்ட வரிசைகளைக் காட்டுகிறது, நீக்கப்பட்ட வரிசைகளை அல்ல